package com.jrx.anytxn.param.service.system;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.system.OrganizationTableReq;
import com.jrx.anytxn.param.dto.system.OrganizationTableRes;
import com.jrx.anytxn.param.entity.PrOrganizationTable;

import java.util.List;

/**
 * 机构表 业务接口
 *
 * @author yx
 * @date 2019/4/30
 */
public interface IOrganizationTableService {


    /**
     * 根据租户ID分页查询机构参数信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.system.OrganizationTableRes>
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:42
     */
    TxnPage<OrganizationTableRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;

    /**
     * 根据租户ID查询机构列表信息
     *
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.dto.system.OrganizationTableRes>
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:43
     */
    List<OrganizationTableRes> findAllOrgByTenId(String tenantId);

    /**
     * 添加机构参数
     *
     * @param organizationTableReq 机构入参
     * @return com.jrx.anytxn.param.dto.system.OrganizationTableRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:43
     */
    OrganizationTableRes addOrganizationTable(OrganizationTableReq organizationTableReq) throws TxnException;


    /**
     * 更新机构参数
     *
     * @param organizationTableReq 机构入参
     * @return com.jrx.anytxn.param.dto.system.OrganizationTableRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:43
     */
    OrganizationTableRes modifyOrganizationTable(OrganizationTableReq organizationTableReq) throws TxnException;

    /**
     * 通过Id主键和租户ID删除机构参数
     *
     * @param organizationId       主键ID
     * @param tenantId 租户ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:43
     */
    Boolean removeByIdAndTenId(String organizationId, String tenantId) throws TxnException;

    /**
     * 通过Id主键和租户ID查询机构参数
     *
     * @param id       主键ID
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.param.dto.system.OrganizationTableRes
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:44
     */
    OrganizationTableRes findByIdAndTenId(Long id, String tenantId) throws TxnException;

    /**
     * 通过organizationId获取机构信息
     *
     * @param orgId
     * @throws TxnBizException
     * @Author: haopu.zheng
     * @return: com.jrx.anytxn.param.account.dto.OrganizationTableRes
     * @Date: 2019/7/31
     **/
    PrOrganizationTable findByOrId(String orgId, String tenantId) throws TxnBizException;


    /**
     * 根据机构号查询机构信息  不带租户ID  批次使用
     * @param organizationId
     * @return
     */
    PrOrganizationTable findByOrgIdForBatch(String organizationId);

}
